#pragma once

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <fcntl.h>

#define FCNTL_ERR 7

// 公共工具类
class Util
{
public:
    // 设置fd为非阻塞式状态
    static void SetNoBlock(int fd)
    {
        int fl = fcntl(fd, F_GETFD, 0); // 获取/设置fd默认状态标记位(返回值)
        if (fl == -1)
        {
            std::cerr << "Set NoBlock error, fcntl error: " << strerror(errno) << std::endl;
            exit(FCNTL_ERR);
        }
        fcntl(fd, F_SETFL, fl | O_NONBLOCK); // 在默认标记位的基础上设置非阻塞标记位
    }
};
